package com.zkt.auth.domain.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.zkt.auth.domain.entity.AuthUserBO;

/**
 * @author 赵开泰
 * @program jc-club
 * @date 2024/9/30
 * @description 用户领域服务
 **/

public interface AuthUserDomainService {
	
	/**
	 * 用户登录
	 *
	 * @param authUserBO 用户登录信息
	 * @return 是否成功
	 */
	SaTokenInfo login(AuthUserBO authUserBO) throws Exception;
	
	/**
	 * 用户验证码登录
	 *
	 * @param captcha 验证码
	 * @return 鉴权信息
	 */
	SaTokenInfo loginByCaptcha(String captcha);
	
	/**
	 * 退出登录
	 *
	 * @return 是否成功
	 */
	Boolean logout();
	
	/**
	 * 注册用户
	 *
	 * @param authUserBO 用户注册信息
	 * @return 是否成功
	 */
	Boolean register(AuthUserBO authUserBO);
	
	/**
	 * 更新用户信息
	 *
	 * @param authUserBO 更新后的用户信息
	 * @return 是否成功
	 */
	Boolean update(AuthUserBO authUserBO);
	
	/**
	 * 删除用户
	 *
	 * @param authUserBO 需要删除的用户信息
	 * @return 是否成功
	 */
	Boolean delete(AuthUserBO authUserBO);
	
	/**
	 * 用户启用/禁用
	 *
	 * @param authUserBO 用户信息
	 * @return 是否成功
	 */
	Boolean changeStatus(AuthUserBO authUserBO);
	
	/**
	 * 获取用户信息
	 *
	 * @param username 用户名
	 * @return 用户信息
	 */
	AuthUserBO getUserInfo(String username);
}
